﻿ using BCCommon;
using BCDto.OA.Workflow.WorkflowActivityInstance;
using BCDto.OA.Workflow.WorkflowOperation;
using BCEntity.OA.TeamWorks.TaskRecord;
using BCService.OA.WorkflowEngine.WorkflowFactory;
using System;
using System.Collections.Generic;
using System.Text;

namespace BCService.OA.Workflow.WorkflowFactoryInstance
{
    [NonInjection]
    public interface IOABusinessFactoryService
    {
        /// <summary>
        /// 任务关闭
        /// </summary>
        /// <param name="instanceDto">活动实例</param>
        /// <param name="taskRecordEntity">任务信息</param>
        /// <param name="workflowOperationRequestDto">工作流操作信息</param>
        void Closed(WorkflowActivityInstanceDto instanceDto, TaskRecordEntity taskRecordEntity, WorkflowOperationRequestDto workflowOperationRequestDto);

        /// <summary>
        /// 初始化活动步骤实例指派
        /// </summary>
        /// <param name="instanceDto">活动实例</param>
        /// <returns></returns>
        bool InitActivityStepInstanceAssign(WorkflowActivityInstanceDto instanceDto);

        /// <summary>
        /// 初始化指派
        /// </summary>
        /// <param name="workflowActivityInstanceDto">活动实例</param>
        /// <returns></returns>
        bool InitAssign(WorkflowActivityInstanceDto workflowActivityInstanceDto);

        /// <summary>
        /// 任务通过
        /// </summary>
        /// <param name="instanceDto">活动实例</param>
        /// <param name="taskRecordEntity">任务信息</param>
        /// <param name="workflowOperationRequestDto">工作流操作信息</param>
        void Pass(WorkflowActivityInstanceDto instanceDto, TaskRecordEntity taskRecordEntity, WorkflowOperationRequestDto workflowOperationRequestDto);

        /// <summary>
        /// 任务暂停
        /// </summary>
        /// <param name="instanceDto">活动实例</param>
        /// <param name="taskRecordEntity">任务信息</param>
        /// <param name="workflowOperationRequestDto">工作流操作信息</param>
        void Paused(WorkflowActivityInstanceDto instanceDto, TaskRecordEntity taskRecordEntity, WorkflowOperationRequestDto workflowOperationRequestDto);

        /// <summary>
        /// 驳回
        /// </summary>
        /// <param name="instanceDto">活动实例</param>
        /// <param name="taskRecordEntity">任务信息</param>
        /// <param name="workflowOperationRequestDto">工作流操作信息</param>
        void Reject(WorkflowActivityInstanceDto instanceDto, TaskRecordEntity taskRecordEntity, WorkflowOperationRequestDto workflowOperationRequestDto);
    }
}
